package traveldream.ejb.packetmanagement;

import java.io.Serializable;
import java.lang.String;

import javax.persistence.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Entity implementation class for Entity: PacchettoViaggio
 *
 */
@Entity 
@Table(name="PACCHETTI") 
@NamedQueries({
	@NamedQuery(name=PacchettoViaggio.FIND_ALL,
				query="SELECT p FROM PacchettoViaggio p ORDER BY p.PID ASC"),
	@NamedQuery(name=PacchettoViaggio.FIND_BY_PID,
				query="SELECT p FROM PacchettoViaggio p WHERE p.PID=?1"),
	@NamedQuery(name=PacchettoViaggio.FIND_BY_DEST,
				query="SELECT p FROM PacchettoViaggio p WHERE p.destinazione=?1"),
	@NamedQuery(name=PacchettoViaggio.FIND_BY_DATE,
				query="SELECT p FROM PacchettoViaggio p WHERE p.dataInizio >= ?1 ORDER BY p.dataInizio ASC"),
	@NamedQuery(name=PacchettoViaggio.FIND_COMBO,
				query="SELECT p FROM PacchettoViaggio p WHERE p.destinazione=?1 AND p.dataInizio >=?2 ORDER BY p.dataInizio ASC"),
	@NamedQuery(name=PacchettoViaggio.FIND_DUPLICATE,
				query="SELECT p FROM PacchettoViaggio p WHERE p.destinazione = ?1 AND p.dataInizio = ?2 AND p.dataFine = ?3 AND p.costoTotale = ?4 AND p.voloAndata = ?5 AND p.voloRitorno = ?6 AND p.hotel = ?7"),
				
}) 

public class PacchettoViaggio implements Serializable {

	public static final String FIND_ALL = "PacchettoViaggio.findAll";
	public static final String FIND_BY_PID = "PacchettoViaggio.findByPid";
	public static final String FIND_BY_DEST = "PacchettoViaggio.findByDestination";
	public static final String FIND_BY_DATE = "PacchettoViaggio.findByDate";
	public static final String FIND_COMBO = "PacchettoViaggio.findCombo";
	public static final String FIND_DUPLICATE = "PacchettoViaggio.findDuplicate";
	public static final String FIND_BY_USER = "PacchettoViaggio.findByUser";
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long PID; 
	private String destinazione;
	@Temporal(javax.persistence.TemporalType.DATE)
	private Date dataInizio;
	@Temporal(javax.persistence.TemporalType.DATE) 
	private Date dataFine;
	private float costoTotale;
	private Volo voloAndata;
	private Volo voloRitorno;
	private Hotel hotel;
	private List<Escursione> escursioni = new ArrayList<Escursione>();
	private static final long serialVersionUID = 1L;

	public PacchettoViaggio(){
		super();
	}
	
	public PacchettoViaggio(String destinazione, Date dataInizio, Date dataFine, float costoTotale, Volo voloAndata,
							Volo voloRitorno, Hotel hotel, List<Escursione> escursioni) {
		super();
		this.destinazione = destinazione;
		this.dataInizio = dataInizio;
		this.dataFine = dataFine;
		this.costoTotale = costoTotale;
		this.voloAndata = voloAndata;
		this.voloRitorno = voloRitorno;
		this.hotel = hotel;
		this.escursioni = escursioni;
	}   
	
	
	public long getPID() {
		return this.PID;
	}

	public void setPID(long PID) {
		this.PID = PID;
	}   
	public String getDestinazione() {
		return this.destinazione;
	}

	public void setDestinazione(String destinazione) {
		this.destinazione = destinazione;
	}   
	public Date getDataInizio() {
		return this.dataInizio;
	}

	public void setDataInizio(Date dataInizio) {
		this.dataInizio = dataInizio;
	}   
	public Date getDataFine() {
		return this.dataFine;
	}

	public void setDataFine(Date dataFine) {
		this.dataFine = dataFine;
	}   
	public float getCostoTotale() {
		return this.costoTotale;
	}

	public void setCostoTotale(float costoTotale) {
		this.costoTotale = costoTotale;
	}
	public Volo getVoloAndata() {
		return voloAndata;
	}
	public void setVoloAndata(Volo voloAndata) {
		this.voloAndata = voloAndata;
	}
	public Volo getVoloRitorno() {
		return voloRitorno;
	}
	public void setVoloRitorno(Volo voloRitorno) {
		this.voloRitorno = voloRitorno;
	}
	public Hotel getHotel() {
		return hotel;
	}
	public void setHotel(Hotel hotel) {
		this.hotel = hotel;
	}
	public List<Escursione> getEscursioni() {
		return escursioni;
	}
	public void setEscursioni(List<Escursione> escursioni) {
		this.escursioni = escursioni;
	}
	
}
